home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / Libraries / MacTCP Library 1.1 / Socks Test ƒ / main.c next >
C/C++ Source or Header  |  1995-12-05  |  3KB  |  126 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #include <MyTCPIncludes.h>
  5. #include <AddressXLation.h>
  6.  
  7. #include <Socks.h>
  8.  
  9. #include <HighLevelDNS.h>
  10.  
  11. #define mySocksDaemon "tcpgate2"
  12. #define mySocksPort 1080
  13.  
  14. int main(){
  15.     OSErr err;
  16.     short tcpV;
  17.     SOCKSiopb pb;
  18.     IPAddr mango;
  19.     char buf[16*1024];
  20.     char buff[50]="Test String";
  21.     char name[10]="dnebing\0";
  22.     IPAddr sock;
  23.     
  24.     printf("Socks Test\n");
  25.     
  26.     err=OpenMacTCP(&tcpV,false);
  27.     printf("Open returns %d\n",err);
  28.     
  29.     err=OpenResolver((StringPtr)0);
  30.     printf("OpenResolver returns %d\n",err);
  31.     
  32.     if (err!=noErr)
  33.         return 0;
  34.     
  35.     DNSLookup(mySocksDaemon,&(pb.csParam.open.socksHost));
  36.     pb.csParam.open.socksPort=mySocksPort;
  37.     sock.a.addr=pb.csParam.open.socksHost;
  38.     pb.csParam.open.socksUser=name;
  39.     
  40.     printf("Socks host: %u.%u.%u.%u\n",sock.a.byte[0],sock.a.byte[1]
  41.         ,sock.a.byte[2],sock.a.byte[3]);
  42.     
  43.     DNSLookup("mango.epix.net",&(mango.a.addr));
  44.     printf("Remote host: %u.%u.%u.%u\n",mango.a.byte[0],mango.a.byte[1]
  45.         ,mango.a.byte[2],mango.a.byte[3]);
  46.     
  47.     err=CloseResolver();
  48.     printf("CloseResolver returns %d\n",err);
  49.     
  50.     pb.ioCRefNum=tcpV;
  51.     pb.csParam.create.rcvBuff=buf;
  52.     pb.csParam.create.rcvBuffLen=16*1024;
  53.     pb.csParam.create.notifyProc=(TCPNotifyUPP)0;
  54.     
  55.     // create a socks (TCP) stream
  56.     err=SOCKS_Create(&pb,false);
  57.     printf("Create returns %d\n",err);
  58.     
  59.     pb.ioCRefNum=tcpV;
  60.     pb.csParam.open.ulpTimeoutValue=0;
  61.     pb.csParam.open.ulpTimeoutAction=0;
  62.     pb.csParam.open.tosFlags=0;
  63.     pb.csParam.open.remoteHost=mango.a.addr;
  64.     pb.csParam.open.remotePort=7;// echo port
  65.     pb.csParam.open.validityFlags=0;
  66.     pb.csParam.open.tosFlags=0;
  67.     pb.csParam.open.precedence=0;
  68.     pb.csParam.open.dontFrag=true;
  69.     pb.csParam.open.timeToLive=0;
  70.     pb.csParam.open.security=0;
  71.     pb.csParam.open.optionCnt=0;
  72.     
  73.     err=SOCKS_ActiveOpen(&pb,false);
  74.     printf("Socks returns %d\n",err);
  75.     
  76.     if (err==noErr){
  77.         wdsEntry en[2];
  78.         char retBuf[100];
  79.         long bufLen;
  80.         
  81.         pb.ioCRefNum=tcpV;
  82.         
  83.         printf("  Have a connection through the socks daemon\n");
  84.         
  85.         pb.csParam.send.ulpTimeoutValue=pb.csParam.send.ulpTimeoutAction=
  86.             pb.csParam.send.validityFlags=0;
  87.         pb.csParam.send.pushFlag=2;
  88.         pb.csParam.send.urgentFlag=0;
  89.         
  90.         en[0].ptr=(Ptr)buff;
  91.         en[0].length=StrLen(buff);
  92.         en[1].ptr=(Ptr)0;
  93.         en[1].length=0;
  94.         
  95.         pb.csParam.send.wdsPtr=(Ptr)en;
  96.         
  97.         err=SOCKS_Send(&pb,false);
  98.         printf("  Send returns %d\n",err);
  99.         
  100.         pb.ioCRefNum=tcpV;
  101.         pb.csParam.receive.commandTimeoutValue=0;
  102.         pb.csParam.receive.rcvBuff=retBuf;
  103.         pb.csParam.receive.rcvBuffLen=100;
  104.         
  105.         err=SOCKS_Rcv(&pb,false);
  106.         printf("  Rcv returns %d, len %d\n",err,pb.csParam.receive.rcvBuffLen);
  107.         
  108.         retBuf[pb.csParam.receive.rcvBuffLen]=0;
  109.         printf("  Received [%s]\n",retBuf);
  110.     }
  111.     
  112.     pb.ioCRefNum=tcpV;
  113.     pb.csParam.close.ulpTimeoutValue=0;
  114.     pb.csParam.close.ulpTimeoutAction=0;
  115.     pb.csParam.close.validityFlags=0;
  116.     
  117.     err=SOCKS_Close(&pb,false);
  118.     printf("Close returns %d\n",err);
  119.     
  120.     pb.ioCRefNum=tcpV;
  121.     err=SOCKS_Release(&pb,false);
  122.     
  123.     printf("Release returns %d\n",err);
  124.     
  125.     return 0;
  126. }